In a data storage system, a management application may be used to control various aspects of the data storage system. For example, the data storage system may include multiple types of hardware, each type being present in multiple hardware revisions. In addition, the management application may include several plugin modules configured to perform different operations on the different elements of the data storage system
Since some of these types of hardware and hardware revisions may have different features (such as, for example, the ability to support different kinds of RAID configurations), a graphical user interface for the management application must be able to display different kinds of information for each type and/or hardware revision. This can be accomplished by hardcoding different display information for every type and hardware revision using if-then-else blocks or switch statements. For example, in a plugin module for creating a new RAID group, if an old hardware revision (rev 1) only supports RAID levels 0 and 1, but newer hardware revisions (revs 2-5) supports RAID layers 0, 1, and 5, and a still newer hardware revision (rev 6) supports RAID levels 1, 5, and 5+1, the display code for the plugin module must be written to present the user with different options depending on the hardware revision of the device that the user is attempting to manage. For example (in pseudo code):
String Options[5]Option1 = “RAID 0”Option2 = “RAID 1”Option3 = “RAID 5”Option4 = “RAID 5+1”Switch (RevisionNumber) { Case 1:  Options[ ]= {Option1, Option2, NULL, NULL, NULL} Case 2: Case 3: Case 4: Case 5:  Options[ ]= {Option1, Option2, Option3, NULL, NULL} Case 6:  Options[ ]= {Option2, Option3, Option4, NULL, NULL}}PrintDropDownBox (Options[ ])